package com.pt.restaurant_backend_management.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pt.restaurant_backend_management.pojo.dto.DishDto;
import com.pt.restaurant_backend_management.pojo.po.Dish;
import com.pt.restaurant_backend_management.common.R;

import java.util.List;


public interface DishService extends IService<Dish> {

    /**
     * 新增菜品及对应口味信息
     * @param dishDto 菜品及口味数据传输对象
     * @return 通用返回结果
     */
    R<String> saveDishWithFlavor(DishDto dishDto);

    /**
     * 分页查询菜品信息
     * @param page 当前页码
     * @param pageSize 每页记录数
     * @param name 菜品名称（可选）
     * @return 分页数据结果
     */
    R<Page> pageByDish(int page, int pageSize, String name);

    /**
     * 修改菜品及对应口味信息
     * @param dishDto 菜品及口味数据传输对象
     * @return 通用返回结果
     */
    R<String> updateDishWithFlavor(DishDto dishDto);

    /**
     * 根据ID查询菜品详细信息（包括口味）
     * @param id 菜品ID
     * @return 菜品数据传输对象
     */
    R<DishDto> getDishInfoById(Long id);

    /**
     * 删除一个或多个菜品
     * @param ids 菜品ID集合
     * @return 通用返回结果
     */
    R<String> deleteDish(List<Long> ids);

    /**
     * 更新菜品状态（起售/停售）
     * @param status 状态值（0：停售，1：起售）
     * @param ids 菜品ID集合
     * @return 通用返回结果
     */
//    R<String> sellStatus(Integer status, List<Long> ids);

    void updateStatus(Integer status, List<Long> ids);

    /**
     * 根据条件查询菜品列表（如分类ID）
     * @param dish 查询条件封装对象
     * @return 菜品数据传输对象列表
     */
    R<List<DishDto>> getDishInfoByCondition(Dish dish);
}
